// pages/selectPointInMapDemo/selectPointInMapDemo.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    longitude: '116.396971', //longitude 默认中心经度,最好是store info下面的经纬度
    latitude: '39.918064', //latitude 默认中心纬度,最好是store info下面的经纬度
    scale: '16', //地图缩放级别
    markers: [], //标记点
    polygons: [] //由经纬度组成的多边形
  },
  /**
   * 点击地图时触发，2.9.0起返回经纬度信息
   */
  async bindMapTap(event) {
    console.log('bindMapTap', event.detail);
    let { latitude, longitude } = event.detail;
    const _this = this;
    //点个坐标点 加个marker 当然要弹出个确认框
    wx.showModal({
      title: '提示',
      content: '确定要添加这个标记点吗?',
      success(res) {
        if (res.confirm) {
          console.log('用户点击确定');
          _this.addPointToMap(latitude, longitude);
        } else if (res.cancel) {
          console.log('用户点击取消');
        }
      }
    });
  },
  /**
   * 添加坐标点到地图上
   * @param { string } latitude 纬度
   * @param { string } longitude 经度
   */
  addPointToMap(latitude, longitude) {
    const _this = this;
    let markers = _this.data.markers;
    let obj = {
      id: new Date().getTime(),
      iconPath: '/images/iconAddressYellow.png', //蓝色的气泡icon 注意命名不允许下划线
      latitude,
      longitude,
      zIndex: markers.length, //显示的层级
      width: 50, //气泡图片的宽度
      height: 50 //气泡图片的高度
    };
    markers.push(obj);
    _this.setData({
      markers
    });
  },
  /**
   * evenPointIntoLine 连点成线
   */
  evenPointIntoLine() {
    let markers = this.data.markers;
    let polygons = this.data.polygons;
    if (markers.length === 0) {
      wx.showToast({
        title: '请先选择坐标点',
        icon: 'none'
      });
      throw new Error('请先选择坐标点');
    }
    let obj = {
      points: markers, //由坐标点组成的区域
      strokeColor: '#6495EDAA',
      strokeWidth: 2,
      fillColor: '#6495EDAA'
    };
    polygons.push(obj);
    this.setData({
      polygons: polygons, //多边形
      markers: []
    });
  },
  /**
   * 清空所有数据
   */
  clearMap() {
    this.setData({
      polygons: [], //多边形
      markers: []
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {},

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {}
});
